﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel.Discovery;
namespace Nardax.ServiceModel.Discovery
{
    interface IDiscoverableServiceProxy<out TServiceContract>
    {
        void OpenAnnouncementService();

        void CloseAnnouncementService();

        void DiscoverAvailableServices();

        void CancleServiceDiscovery();

        void Call(Action<TServiceContract> method);

        IEnumerable<TResult> Call<TResult>(Func<TServiceContract, TResult> method);

        Collection<Uri> Scopes { get; }
    }
}
